Cloud computing refers to highly scalable networked computing systems capable of delivering elastic computing performance to numerous users. Cloud computing typically involves clusters of densely packed computing servers, called compute nodes, with each compute node potentially executing dozens of virtual machines. Typically, each node includes a hypervisor or other virtualization framework, and the entire cloud computing cluster includes one or more cloud controllers that manage instantiation of virtual machines on the particular compute nodes.
In a multi-tenant cloud computing environment, different customers may control the virtual machines on a particular compute node. Thus, the resources of the compute node, such as processor, network, and storage resources, must be shared among the virtual machines, and thus, among different customers. In some multi-tenant environments, resource allocation is based on central processing unit (CPU) speed rather than workload performance, resulting in performance loss and under-utilization of resources.